package 贪心;

/**
 * @author admin
 * @version 1.0.0
 * @ClassName 避免重复字母的最小删除成本.java
 * @Description TODO
 * @createTime 2020年10月19日 17:02:00
 * 给你一个字符串 s 和一个整数数组 cost ，其中 cost[i] 是从 s 中删除字符 i 的代价。
 *
 * 返回使字符串任意相邻两个字母不相同的最小删除成本。
 *
 * 请注意，删除一个字符后，删除其他字符的成本不会改变。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：s = "abaac", cost = [1,2,3,4,5]
 * 输出：3
 * 解释：删除字母 "a" 的成本为 3，然后得到 "abac"（字符串中相邻两个字母不相同）。
 * 示例 2：
 *
 * 输入：s = "abc", cost = [1,2,3]
 * 输出：0
 * 解释：无需删除任何字母，因为字符串中不存在相邻两个字母相同的情况。
 *
 * 思路：在一堆相同的字母中找出最大的和这些字母的和 相减就是删除的最小成本
 */
public class 避免重复字母的最小删除成本 {
//    public int minCost(String s, int[] cost) {
//        int i = 0;
//        int ret = 0;
//        while (i < s.length()) {
//            char ch = s.charAt(i);
//            int maxValue = 0;
//            int sum = 0;
//
//            while (i <s.length() && s.charAt(i) == ch) {
//                maxValue = Math.max(maxValue, cost[i]);
//                sum += cost[i];
//                i++;
//            }
//            ret += (sum - maxValue);
//        }
//        return ret;
//
//    }


//    public int minCost(String s, int[] cost) {
//        int res = 0;
//        char[] word = s.toCharArray();
//        for(int i = 0;i < word.length;i++){
//            char c = word[i];
//            int max = cost[i];
//            int sum = max;
//            //检查是否有重复的。
//            while(i + 1 < word.length && word[i + 1] == c){
//                sum += cost[++i];
//                max = Math.max(max,cost[i]);
//            }
//            if(sum != max){
//                res += sum - max;
//            }
//        }
//        return res;
//    }
}
